package xhwl.insurance.http;

import java.util.ArrayList;

import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.POST;
import rx.Observable;
import xhwl.insurance.http.bean.ReferralPicBean;
import xhwl.insurance.http.bean.resp.BuyOrder;
import xhwl.insurance.http.bean.resp.CardDetailResq;
import xhwl.insurance.http.bean.resp.CardInfo;
import xhwl.insurance.http.bean.resp.CommonProblemResp;
import xhwl.insurance.http.bean.resp.CustomerServiceLeftResp;
import xhwl.insurance.http.bean.resp.ErrorCode;
import xhwl.insurance.http.bean.resp.ExpertResp;
import xhwl.insurance.http.bean.resp.ForumAllCommentResp;
import xhwl.insurance.http.bean.resp.ForumProductResp;
import xhwl.insurance.http.bean.resp.ForumCommentResp;
import xhwl.insurance.http.bean.resp.ForumSearchResp;
import xhwl.insurance.http.bean.resp.HospitalListResp;
import xhwl.insurance.http.bean.resp.HzOrderResp;
import xhwl.insurance.http.bean.resp.MessageCenterResp;
import xhwl.insurance.http.bean.resp.MessageResp;
import xhwl.insurance.http.bean.resp.MyInfoReturnBean;
import xhwl.insurance.http.bean.resp.MyInfoReturnResp;
import xhwl.insurance.http.bean.resp.Order;
import xhwl.insurance.http.bean.resp.OrderDetailResp;
import xhwl.insurance.http.bean.resp.ProcessInfoResp;
import xhwl.insurance.http.bean.resp.ProcessListResp;
import xhwl.insurance.http.bean.resp.ResponseError;
import xhwl.insurance.http.bean.resp.SaleInfoResp;
import xhwl.insurance.http.bean.resp.SaleMoneyResp;
import xhwl.insurance.http.bean.resp.SalesCardData;
import xhwl.insurance.http.bean.resp.SanJiFenXiaoResp;
import xhwl.insurance.http.bean.resp.SearchVideoResp;
import xhwl.insurance.http.bean.resp.SmsResp;
import xhwl.insurance.http.bean.resp.StaffServiceListResp;
import xhwl.insurance.http.bean.resp.TwoSaleResp;
import xhwl.insurance.http.bean.resp.UnReadMsgResp;
import xhwl.insurance.http.bean.resp.UpgradeResp;
import xhwl.insurance.http.bean.resp.UserGuideListResp;
import xhwl.insurance.http.bean.resp.VersionUpdateListResp;
import xhwl.insurance.http.bean.resp.VideoListResp;
import xhwl.insurance.http.bean.resp.WeixinpayRespBean;
import xhwl.insurance.http.bean.resp.WithDrawApplyResp;
import xhwl.insurance.http.bean.resp.XDYPResp;
import xhwl.insurance.http.bean.resp2.HttpResp;
import xhwl.insurance.http.bean.resp2.TestResp;


public interface ApiService {

    /**
     * 升级
     *
     * @param body
     * @return
     */
    @POST("interface/app_expert/app_update_info.aspx")
    Observable<UpgradeResp> checkUpgrade(@Body RequestBody body);

//    /**
//     * 获取验证码
//     *
//     * @param url
//     * @param mobile
//     * @param type
//     * @param Clientid
//     * @return
//     */
//    @FormUrlEncoded
//    @POST
//    Observable<VerifyCodeResp> getVerifyCode(@Url String url, @Field("mobile") String mobile, @Field("type") String type, @Field("Clientid") String Clientid);

    /**
     * 获取验证码
     *
     * @param body
     * @return
     */
    @POST("interface/app_jwsh/get_sms_voice_code.aspx")
    Observable<SmsResp> getVerifyCode(@Body RequestBody body);

    /**
     * 获取微信支预付订单号
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/UnifiedOrder.aspx")
    Observable<WeixinpayRespBean> getWeixinpayPreid(@Body RequestBody body);

    /**
     * 心电阅片订单提交
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/hz_buy_xd_ok.aspx")
    Observable<Order> submitOrderyuepian(@Body RequestBody body);

    /**
     * 心电阅片订单列表
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/order_xd_list.aspx")
    Observable<ArrayList<XDYPResp>> orderlistyuepian(@Body RequestBody body);

    /**
     * 心电阅片订单时间列表
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/hz_buy_xd_time.aspx")
    Observable<ArrayList<XDYPResp>> orderlistyuepiantime(@Body RequestBody body);

    /**
     * 三级分销-代言成果
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/three_sale_list.aspx")
    Observable<ArrayList<SanJiFenXiaoResp>> threesale(@Body RequestBody body);

    /**
     * HMO售卡统计
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/sale_statistics_screen.aspx")
    Observable<ArrayList<HzOrderResp>> hzOrder(@Body RequestBody body);

    /**
     * 我的业绩金额
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/get_sale_money.aspx")
    Observable<SaleMoneyResp> saleMoney(@Body RequestBody body);

    /**
     * 心电阅片订单详情
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/order_xd_detail.aspx")
    Observable<OrderDetailResp> getorderdetail(@Body RequestBody body);

    /**
     * 心电阅片支付成功更新订单接口
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/online_pay_xd.aspx")
    Observable<ResponseError> orderStateRefresh(@Body RequestBody body);

    /**
     * 获取用户销售信息
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/get_sale_info.aspx")
    Observable<SaleInfoResp> getSaleInfo(@Body RequestBody body);

    /**
     * 获取用户信息
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/member_info.aspx")
    Observable<MyInfoReturnResp> getUserInfo(@Body RequestBody body);

    /**
     * 支付前检查订单支付的状态
     *
     * @param body
     * @return
     */
    @POST("interface/app_vdoctor/order_xd_info.aspx")
    Observable<Order> checkOrderPayStatus(@Body RequestBody body);

    /**
     * 获取会员信息
     *
     * @param body
     * @return
     */
    @POST("interface/app_expert/expert_info.aspx")
    Observable<MyInfoReturnBean> loadPersonInfo(@Body RequestBody body);


    /**
     * 获取售卡页面的数据
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/shopping_show.aspx")
    Observable<ArrayList<SalesCardData>> fetchSalesCardData(@Body RequestBody body);

    /**
     * 申请提现
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/get_blance_info.aspx")
    Observable<WithDrawApplyResp> applywithdraw(@Body RequestBody body);

    /**
     * 我的销售价格列表
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/two_sale_list.aspx")
    Observable<ArrayList<TwoSaleResp>> twoSale(@Body RequestBody body);

    /**
     * 验证码登录
     *
     * @param body
     * @return
     */
    @POST("interface/app_member_op/login_code.aspx")
    Observable<String> authCodeLogin(@Body RequestBody body);

    /**
     * 购买下单接口
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/bx_buy_ok.aspx")
    Observable<BuyOrder> getOrder(@Body RequestBody body);

    /**
     * 添加被保障人接口
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/person_add.aspx")
    Observable<ErrorCode> addpatient(@Body RequestBody body);

    /**
     * 修改信息接口
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/edit_ok.aspx")
    Observable<ResponseError> updateInfo(@Body RequestBody body);

    /**
     * 全部订单列表
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/order_list.aspx")
    Observable<String> orderList(@Body RequestBody body);

    /**
     * 订单详情
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/order_info.aspx")
    Observable<String> orderDescInfo(@Body RequestBody body);

    /**
     * 取消订单
     *
     * @param body
     * @return
     */
    @POST("interface/app_member/order_delete.aspx")
    Observable<String> cancleOrder(@Body RequestBody body);

    /**
     * 提交资料卡号等
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/apply_item_add.aspx")
    Observable<ErrorCode> submitfile(@Body RequestBody body);

    /**
     * 售卡详情接口
     *
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/person_bx_list_gm.aspx")
    Observable<HttpResp<ArrayList<CardDetailResq>>> personBxList(@Body RequestBody body);

    /**
     * 上传图片
     *
     * @param body
     * @return
     */
    @POST("interface/app_member_op/up_load_image_thumb.aspx")
    Observable<ArrayList<ReferralPicBean>> uploadpic(@Body RequestBody body);


    //订单处理列表
    @POST("interface/app_sale_card/process_list_gm.aspx")
    Observable<HttpResp<ArrayList<ProcessListResp>>> processList(@Body RequestBody body);


    //订单处理详情（处理中）
    @POST("interface/app_sale_card/process_info.aspx")
    Observable<ProcessInfoResp> processInfo(@Body RequestBody body);
    //修改处理中订单
    @POST("interface/app_sale_card/item_resubmit.aspx")
    Observable<ResponseError> updateSaleInfo(@Body RequestBody body);

    //用户指南列表
    @POST("interface/app_sale_card/user_guide.aspx")
    Observable<ArrayList<UserGuideListResp>> UserGuideList(@Body RequestBody body);

    //版本升级功能列表
    @POST("interface/app_sale_card/version_introduce.aspx")
    Observable<ArrayList<VersionUpdateListResp>> VersionUpdateList(@Body RequestBody body);

    //消息列表
    @POST("interface/app_sale_card/yc_app_push.aspx")
    Observable<ArrayList<MessageCenterResp>> getMessageCenter(@Body RequestBody body);
    //注册极光推送
    @POST("interface/app_member/register_jg_add.aspx")
    Observable<xhwl.android.common.http.bean.ResponseError> registJPush(@Body RequestBody body);

    //更新登录设备信息
    @POST("interface/app_member_op/update_login_info.aspx")
    Observable<ResponseError> updateLoginInfo(@Body RequestBody body);
    //新消息列表
    @POST("interface/app_sale_card/yc_app_push_new.aspx")
    Observable<ArrayList<MessageResp>> getMessage(@Body RequestBody body);
    //标记消息已读删除
    @POST("interface/app_sale_card/read_status.aspx")
    Observable<ResponseError> markMessageStatus(@Body RequestBody body);
    //获取未读消息数量
    @POST("interface/app_sale_card/unread_news.aspx")
    Observable<UnReadMsgResp> getUnReadMsgCount(@Body RequestBody body);
    //获取消息详情
    @POST("interface/app_sale_card/process_info_new.aspx")
    Observable<ProcessListResp> getProcessInfo(@Body RequestBody body);

    //测试新接口
    @POST("interface/app_sale_card/test.aspx")
    Observable<HttpResp<TestResp>> test(@Body RequestBody body);
    //测试新接口
    @POST("interface/app_sale_card/test_list.aspx")
    Observable<HttpResp<ArrayList<TestResp>>> testList(@Body RequestBody body);

    //根据价格查询卡信息
    @POST("interface/app_vdoctor/select_price.aspx")
    Observable<CardInfo> queryCardInfo(@Body RequestBody body);


    //视频列表
    @POST("interface/app_sale_card/yc_hmo_video_list.aspx")
    Observable<HttpResp<ArrayList<VideoListResp>>> getVideoList(@Body RequestBody body);

    /**
     *论坛帖子列表
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_forum_list.aspx")
    Observable<HttpResp<ArrayList<ForumProductResp>>> ForumList(@Body RequestBody body);
    /**
     *评论论坛帖子
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_reply_submit.aspx")
    Observable<HttpResp> ForumReplyList(@Body RequestBody body);
    /**
     *论坛评论数据
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_reply_list.aspx")
    Observable<HttpResp<ArrayList<ForumCommentResp>>> ForumCommentList(@Body RequestBody body);
    /**
     *消息列表回复我的数据
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_forum_reply_me_list.aspx")
    Observable<HttpResp<ArrayList<ForumAllCommentResp>>> ForumAllCommentList(@Body RequestBody body);
    /**
     *根据post_id跳转到帖子详情
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_forum_detail.aspx")
    Observable<HttpResp<ArrayList<ForumProductResp>>> ForumDetailList(@Body RequestBody body);

    /**
     *提问发送论坛数据
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_post_submit.aspx")
    Observable<HttpResp> SendForum(@Body RequestBody body);


    /**
     * 论坛提问上传图片
     *
     * @param body
     * @return
     */
    @POST("/interface/app_member_op/up_load_image_thumb.aspx")
    Observable<ArrayList<ReferralPicBean>> uploadforumpic(@Body RequestBody body);

    /**
     * 客服自动回复功能
     */
    @POST("/interface/app_sale_card/yc_intelligent_contact.aspx")
    Observable<HttpResp<CustomerServiceLeftResp>> intelligent_contact(@Body RequestBody body);

    /**
     *视频列表点赞
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_video_thumbs_up.aspx")
    Observable<HttpResp> getGiveThumbs_up(@Body RequestBody body);
    /**
     *论坛列表点赞
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_forum_thumbs_up.aspx")
    Observable<HttpResp> getForumThumbsUp(@Body RequestBody body);

    /**
     *视频搜索
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_video_search.aspx")
    Observable<HttpResp<ArrayList<SearchVideoResp>>>getSearchInfo(@Body RequestBody body);
    /**
     *论坛搜索
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_forum_search.aspx")
    Observable<HttpResp<ArrayList<ForumSearchResp>>>getforumSearchInfo(@Body RequestBody body);



    //智能客服常见问题
    @POST("interface/app_sale_card/yc_common_problem.aspx")
    Observable<HttpResp<ArrayList<CommonProblemResp>>> getCommonProblem(@Body RequestBody body);

    //视频详情
    @POST("interface/app_sale_card/yc_hmo_video_detail.aspx")
    Observable<HttpResp<ArrayList<VideoListResp>>> getVideoDetails(@Body RequestBody body);
    /**
     *回复我的消息 已读接口
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_replyme_read_status.aspx")
    Observable<HttpResp> ReadReplyMsg(@Body RequestBody body);

    /**
     *意见反馈
     */
    @POST("/interface/app_sale_card/yc_hmo_feedback_submit.aspx")
    Observable<HttpResp> getFeedBack(@Body RequestBody body);

     /**
    *视频浏览量接口
     */
    @POST("/interface/app_sale_card/yc_video_page_view.aspx")
    Observable<HttpResp> getClickAmountt(@Body RequestBody body);
    /**
     * 上传语音
     *
     * @param body
     * @return
     */
    @POST("interface/app_member_op/upload_voice.aspx")
    Observable<ArrayList<ReferralPicBean>> uploadVoice(@Body RequestBody body);

    /**
     * 视频详情帖子
     * @param body
     * @return
     */
//    @POST("interface/app_sale_card/yc_hmo_video_detail_related.aspx")
    @POST("interface/app_sale_card/yc_hmo_video_related_forum.aspx")
    Observable<HttpResp<ArrayList<ForumProductResp>>> getVideoDetailRelated(@Body RequestBody body);

    /**
     * 医院列表
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/hospital_list.aspx")
    Observable<ArrayList<HospitalListResp>> getHospitalList(@Body RequestBody body);
    /**
     * 专家列表
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/expert_list.aspx")
    Observable<ArrayList<ExpertResp>> getExpertList(@Body RequestBody body);


    /**
     * 人工客服列表
     * @param body
     * @return
     */
    @POST("interface/app_sale_card/yc_hmo_artificial_ask_list.aspx")
    Observable<HttpResp<ArrayList<StaffServiceListResp>>> getArtificialServiceList(@Body RequestBody body);

    /**
     *人工客服发表语音
     * @param body
     * @return
     */
    @POST("/interface/app_sale_card/yc_hmo_artificial_ask_submit.aspx")
    Observable<HttpResp> SendVoice(@Body RequestBody body);

    //注册极光推送（新）
    @POST("interface/jpush/jpush.aspx")
    Observable<HttpResp> regJPush(@Body RequestBody body);

}
